gRPC 是由 Google 開源的一種高效能、跨平台的通信框架,專門用於分散式系統的服務間通信。它基於 HTTP/2 協議,採用了 Protocol Buffers (protobuf) 作為數據格式。gRPC 支援多種編程語言,並且具備自動生成客戶端和伺服器代碼的功能,能夠顯著提高開發效率。
gRPC 的主要特點包括:
項目 | gRPC | RESTful API |
---|---|---|
通信協議 | 基於 HTTP/2,支援多工與頭部壓縮,效率高 | 通常使用 HTTP/1.1,請求需獨占連線,效率較低 |
資料格式 | 使用 Protocol Buffers(二進位格式),效能高但不易閱讀 | 使用 JSON 或 XML(純文字格式),易讀但效能較差 |
通信模式 | 支援一元、伺服器串流、客戶端串流、雙向串流等四種模式 | 主要為單一的請求-回應模式 |
契約定義 | 使用 .proto 定義,強型別、契約驅動 |
多依賴 OpenAPI (Swagger),強型別支持較弱 |
性能表現 | 高效能,延遲低,傳輸快 | 效能較差,延遲高 |
瀏覽器支援 | 原生支援有限,需透過 gRPC-Web 代理 | 原生支援所有瀏覽器 |
程式碼產生 | 可自動產生多語言的客戶端與伺服器程式碼,開發效率高 | 通常需手動撰寫,或依賴額外工具 |
選擇 gRPC 或 RESTful API 需基於具體應用場景: